package com.v1.video.util;

import android.view.View;
import android.view.ViewGroup;
import android.widget.ListAdapter;
import android.widget.ListView;

public class ListViewAutoHeight {
	public static void setListViewHeightBasedOnChildren(ListView listView) {
		// 获取ListView对应的Adapter
		ListAdapter Adapter = (ListAdapter) listView
				.getAdapter();
		if (Adapter == null) {
			return;
		}
		int totalHeight = 0;
//		for (int i = 0; i < Adapter.getCount() + 2; i++) { // listAdapter.getCount()返回数据项的数目
		for (int i = 0; i < Adapter.getCount(); i++) { // listAdapter.getCount()返回数据项的数目
			View listItem = Adapter.getView(i, null, listView);
			listItem.measure(0, 0); // 计算子项View 的宽高
			totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度
			System.out.println("totalHeight---------->" + totalHeight);
		}
		ViewGroup.LayoutParams params = listView.getLayoutParams();
		params.height = totalHeight
				+ (listView.getDividerHeight() * (Adapter.getCount() - 1));
		System.out.println("间隙高度----------》" + listView.getDividerHeight()
				* (Adapter.getCount() - 1));
		// listView.getDividerHeight()获取子项间分隔符占用的高度
		// params.height最后得到整个ListView完整显示需要的高度
		listView.setLayoutParams(params);
	}
}
